Controlling light source intensities on optically trackable object

ABSTRACT

Examples are disclosed that relate to dynamically controlling light sources on an optically trackable peripheral device. One disclosed example provides a near-eye display device comprising an image sensor, a communications subsystem, a logic subsystem, and a storage subsystem. The storage subsystem stores instructions executable by the logic subsystem to control a peripheral device comprising a plurality of light sources by receiving image data from the image sensor, identifying in the image data a constellation of light sources formed by a subset of light sources of the peripheral device, and based upon the constellation of light sources identified, send to the peripheral device via the communications subsystem constellation information related to the constellation of light sources identified.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/231,205, filed Dec. 21, 2018, the entirety of which is herebyincorporated herein by reference for all purposes.

BACKGROUND

Computing devices may optically track user gestures as an inputmechanism. In some systems, user gestures may be tracked by tracking viaa camera a peripheral device held by or worn on a user.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter. Furthermore,the claimed subject matter is not limited to implementations that solveany or all disadvantages noted in any part of this disclosure.

Examples are disclosed that relate to dynamically controlling lightsources on an optically trackable peripheral device. One disclosedexample provides a near-eye display device comprising an image sensor, acommunications subsystem, a logic subsystem, and a storage subsystem.The storage subsystem stores instructions executable by the logicsubsystem to control a peripheral device comprising a plurality of lightsources by receiving image data from the image sensor, identifying inthe image data a constellation of light sources formed by a subset oflight sources of the peripheral device, and based upon the constellationof light sources identified, send to the peripheral device via thecommunications subsystem constellation information related to theconstellation of light sources identified.

Another disclosed example provides a peripheral device configured to beheld or worn by a user, the peripheral device comprising a plurality oflight sources, a communications subsystem configured to receiveconstellation information from a remote computing device regarding aconstellation of light sources of the peripheral device detected by theremote computing device in image data, and a controller. The controlleris configured to, based upon the constellation information received,determine an intensity at which to illuminate each light source withinthe constellation of light sources, and adjust the intensity of one ormore light sources based on the intensities determined.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a use scenario in which an example peripheral devicecomprising a plurality of light sources is optically tracked.

FIG. 2 shows a schematic diagram of example light source controlcircuitry.

FIG. 3 shows an example light source intensity calibration table.

FIGS. 4A-4B illustrate an example light source intensity adjustmentbased upon a position of a peripheral device within a field of view of ahead-mounted device.

FIGS. 5A-5B schematically illustrate an example light source intensityadjustment based on a position of the peripheral device outside of afield of view of the head-mounted device.

FIGS. 6A-6B schematically illustrate an example light source intensityadjustment based on a motion of the peripheral device of FIG. 1 toward afield of view of the head-mounted device.

FIG. 7 shows a flowchart illustrating an example method for sendingconstellation information to a peripheral device to control theperipheral device.

FIG. 8 shows a flowchart illustrating an example method for adjusting anintensity of each of one or more light sources based upon receivedconstellation information.

FIG. 9 shows a flowchart illustrating an example method for calibratinglight sources of a peripheral device.

FIGS. 10, 11A and 11B illustrate aspects of the example calibrationmethod of FIG. 9.

FIG. 12 shows a block diagram of an example computing system.

DETAILED DESCRIPTION

As mentioned above, a computing device may be configured to recognizeuser gestures as input. In some such devices, user gestures may betracked by optically tracking a peripheral device held by or worn on auser. To facilitate such tracking, the peripheral device may comprise aplurality of light sources (infrared and/or visible) arranged at knownlocations on the peripheral device. Different patterns of light sourceswill be detected in image data based upon the position of the lightsources relative to an image sensor capturing the image data. Byidentifying the light sources in an image frame (e.g. by fitting theobserved light source pattern to a three-dimensional model of the lightsources), the position of the peripheral device may be identified ineach frame of image data.

Such light sources may be powered continuously during use, regardless ofwhether each light source is currently detectable via an image sensor.Thus, a relatively large fraction of light sources that are illuminatedmay be occluded from view or facing away from the image sensor in animage frame. Thus, continuously powering all light sources of theperipheral device may result in unnecessarily high power consumption andmore frequent battery charging or replacement.

Further, the imaged light sources may appear not to have uniformbrightness in image data, even where all light sources are evenlyilluminated. For example, light sources viewed at low angle by the imagesensor may appear to be brighter than those viewed at larger angles dueto the angular intensity distribution of each light source having a peakintensity along an optical axis of the light source. Likewise, lightsources may appear to be brighter when the peripheral device is closerto an image sensor than when farther away. Shorter distances between theperipheral device and the image sensor may cause light sources directlyfacing the image sensor to saturate the image sensor pixels. However,reducing the intensity of all light sources equally to avoid suchsaturation may cause light sources at higher angles relative to theimage sensor to become difficult to perceive, which may impact opticaltracking performance.

Accordingly, examples are disclosed that may help to address suchproblems. Briefly, the disclosed examples relate to dynamicallyadjusting an intensity of each of one or more light sources of aperipheral device based on a determined pose of the peripheral devicerelative to the computing device and/or movement of the peripheraldevice relative to the computing device. An image sensor (which may beintegrated with the computing device or separate from the computingdevice) captures images of the peripheral device and provides the imagedata to the computing device. The computing device detects in the imagedata a subset of light sources (a “constellation”) of the peripheraldevice and communicates constellation information to the peripheraldevice via a wired or wireless connection. Based on the constellationinformation received, the peripheral device adjusts an intensity of oneor more light sources according to pre-calibrated constellation-specificintensity values. As examples, light sources at lower angles relative tothe image sensor may be illuminated at lower intensities than those athigher angles. Further, the intensity of light sources out of view maybe reduced to zero. This may help to improve battery life, and mayfacilitate object tracking by providing for more uniform apparentintensities as sensed by the image sensor. Further, the disclosedexamples may help to normalize power consumed by light sources within aconstellation of light sources.

FIG. 1 shows an example use scenario for a VR display system 100 inwhich a computing device in the form of a near-eye display (NED) device102, worn by a user 104, displays immersive virtual reality imagery. Anoutward-facing image sensor 106 (here a stereo camera arrangementcomprising a first camera 106 a and a second camera 106 b) of the NEDdevice 102 acquires image data of a surrounding real-world environmentin which peripheral devices 108 are held by the user 104. Whiledescribed in the context of a virtual reality NED device, objecttracking as disclosed herein may be utilized to control any othersuitable computing device, including but not limited to augmentedreality (AR) and/or mixed reality (MR) display devices, other wearabledevices, desktop devices, laptop devices, tablet devices, and mobiledevices.

The peripheral devices 108 are depicted in this example as controllersfor a video game system. Each peripheral device 108 takes the form of awireless device configured to be used to make gesture inputs having sixdegrees of freedom (6DOF). Each peripheral device 108 includes aplurality of light sources (one of which is shown as 110) to assist inoptical tracking of the peripheral device 108. In FIG. 1, the pluralityof light sources 110 are distributed along both an exterior and aninterior of a ring-like structure of the peripheral device 108. Thelight sources 110 are configured to be detected as constellations inimage data acquired by the image sensor 106 of the NED device 102, suchthat a pose of the peripheral device 108 may be determined from theimage data based at least on the constellation detected. In otherexamples, a peripheral device may include a wired connection to acomputing device.

As mentioned above, some light sources of the peripheral device 108 maybe occluded from a view of the image sensor 106 during use. In theexample of FIG. 1, light sources 112 a-e are occluded. The peripheraldevice 108 thus may power off these light sources (e.g. adjust anintensity of each light source 112 a-e to zero) when the peripheraldevice 108 receives constellation information from the NED device 102indicating that these light sources 112 a-e are not within aconstellation of light sources detected or, in some examples, predictedto be detected by the NED device 102.

The NED device 102 comprises a storage subsystem 114, a logic subsystem116, and a communication subsystem 118 (e.g. a wireless transmitter andreceiver), examples of which are described in more detail herein withrespect to FIG. 12. The storage subsystem 114 may store, for example, athree-dimensional model of the peripheral device 108 including positionsand orientations of light sources 110 residing on the peripheral device108. The logic subsystem 116 is configured to receive image data fromthe image sensor 106 of the NED device 102 and identify within the imagedata a constellation of light sources formed by a subset of lightsources of the peripheral device. In some examples, light sources areidentified within an image by thresholding the image to find approximatelight source locations, and then fitting a statistical curve (e.g. aGaussian function) to the threshold images to locate the light sourceson a pixel or sub-pixel basis. Epipolar line fitting, a rigid bodytransformation, or any other suitable method may be used to identify aconstellation of light sources of the peripheral device that correspondsto the light source locations detected within the image data. Based onthe constellation of light sources identified, the NED device 102 sendsconstellation information to the peripheral device 108.

In some examples, the NED device 102 may comprise a motion sensor 120(e.g. one or more of a magnetometer, gyroscope, accelerometer, and/orother suitable sensor) configured to detect motion of the NED device102. In addition or alternatively to a motion sensor 120, the NED device102 may be configured to determine a movement of the NED device 102relative to the peripheral device 108 (and/or relative to thesurrounding real-world environment) via image data obtained by the imagesensor 106, for example, by visually tracking a position and/ororientation of one or more features in the real-world environment on aframe-to-frame basis. In some examples, such motion tracking may beused, for example, to predict a constellation of light sources of theperipheral device 108 likely to be viewed in a future image frame (e.g.within the next 10-20 ms).

The peripheral device 108 comprises a motion sensor 122 (e.g. one ormore of a magnetometer, gyroscope, accelerometer, and/or other suitablesensor) that provides output related to motion of the peripheral device,including movement and changes in position and/or orientation. Motiondata obtained by the motion sensor 122 may be sent to the NED device 102via communication subsystem 124.

In some examples, the NED device 102 and the peripheral device 108 areconfigured to communicate with one another directly. In other examples,an optional host computing device (e.g. a personal computer, a gameconsole, etc.) (not shown) may communicate with the NED device 102 andthe peripheral device 108. The host computing device may process data(e.g. image data, motion data) received from the NED device 102 and theperipheral device 108, and send control signals to the NED device 102and the peripheral device 108. The specific communication channelsdescribed herein are for the purpose of example, and any other suitablecommunications channels, wired (e.g. universal serial bus) and/orwireless, may be used for NED-to-host communication, host-to-peripheraldevice communication, and/or NED-to-peripheral device communication.

Continuing with FIG. 1, the peripheral device 108 further comprises astorage subsystem 126 storing a calibration table 128. As described inmore detail with respect to FIG. 3, the calibration table 128 includesconstellation-specific intensity values for each light source of theperipheral device 108 for each of a plurality of possibleconstellations. The constellation-specific intensity values provide, foreach of a plurality of constellations that may be sensed by the NEDdevice 102, intensity values for each light source of the peripheraldevice at which the light sources may appear to an image sensor to havesuitably uniform intensities. The constellation-specific intensityvalues for each constellation also may comprise values specifying zerointensity for light sources not visible to an image sensor when thatconstellation is imaged.

A controller 130 residing on the peripheral device 108 is configured tocontrol a power provided to each light source based upon intensityvalues in the calibration table 128 that correspond to the constellationinformation received from the NED device 102. The controller 130 may beimplemented via any suitable hardware, software, and/or firmware. Insome examples, the controller 130 comprises a microcontroller (MCU)and/or a system-on-chip (SoC).

The light sources 110 of each peripheral device 108 may take anysuitable form, such as light-emitting diodes (LEDs) that emit visiblelight for detection via a visible light camera or cameras of the NEDdevice 102. Infrared (IR) light sources (e.g. IR LEDs) also may be used,for detection via an IR light camera or cameras of the NED device 102.In some examples, the image sensor 106 of the NED device 102 may beconfigured to filter wavelengths of light other than those emitted bythe light sources 110, which may help to reduce noise levels in theimage data. In some examples, the peripheral device 108 comprises fromtwenty to forty light sources. In a more specific example, theperipheral device 108 comprises thirty-two light sources. In otherexamples, a peripheral device 108 may have any other suitable number oflight sources, and the light sources may be arranged in any suitablepattern.

The controller 130 may provide signals to any suitable circuitry 132 tocontrol the power provided to individual light sources of the peripheraldevice 108. FIG. 2 shows one example of such circuitry comprising LEDdrivers 202 a, 202 b configured to output a suitable amount of powerbased upon control signals received from controller 130. In thisexample, each LED driver 202 a, 202 b comprises a 16-channel serialperipheral interface (SPI) LED parallel driver, such that two driverscontrol the power supplied to each of 32 individual LED light sources.In a more specific example, the SPI LED parallel drivers may comprise a30 MHz data transfer rate and a 40 mA constant current sink outputcapability. In other examples, any suitable drivers may be used tocontrol power supplied to any suitable number of light sources.

The calibration table 128 may take any suitable form. For example, thecalibration table 128 may store constellation-specific intensity valuesfor a same number of constellations as a number of light sources on theperipheral device 108, wherein each constellation is based upon anidentity of a light source at a lowest angle to the image sensor of acurrently detected constellation. FIG. 3 depicts an example calibrationtable 300 comprising, for each constellation of n constellations, lightsource intensity information for each of a plurality of light sources.In this example, the leftmost column 302 of the calibration table 300indicates an index light source for each row. In some examples, theindex light source may comprise a centermost light source (e.g. smallestviewing angle) of a currently detected constellation. For a stereocamera arrangement comprising two or more cameras, the centermost lightsource may be located at an approximate center of a region in which afield of view of each camera overlaps.

Each row of the calibration table 300 further comprisesconstellation-specific intensity values for each light source of theperipheral device for the constellation represented by the index lightsource. For example, the first row 304 of the calibration table 300includes an entry L(1), B(1), where L(1) indicates index LightSource1(the center light source of the constellation) and B(1) is the centerlight source brightness within the constellation indexed byLightSource1. In the next column of the first row 804, entry L(11),B(11) indicates a brightness B(11) for a first light source other thanthe center light source within the constellation indexed by LightSource1(L(11)). In the next column, L(12), B(12) indicates a brightness B(12)for a second light source other than the center light source within theconstellation indexed by LightSource1 (L(12)). The first row 304 furtherincludes brightness values for all other light sources n for theconstellation indexed by LightSource1. More generally, in each tablerow, L(IJ) indicates LightSourceJ in constellation I, and B(IJ)indicates the brightness of this light source. As some light sources maybe out of view of the image sensor in each constellation, thecalibration table 300 may store intensity values of zero for one or moreout-of-view light sources. Further, the calibration table 300 may storeeither zero or non-zero intensities for light sources that are in abuffer zone neighboring those light sources in view but that themselvesare out of view. Storing non-zero values for such light sources mayensure that such light sources can be imaged if they come into viewquickly as a user moves.

In some examples, a calibration table may include additional rows. Forexample, a calibration table may store multiple rows for each indexlight source, wherein each row corresponds to a different direction ofmotion of the peripheral device. Such rows may specify to illuminatelight sources that are not currently in view but that may come into viewbased upon the current motion. In other examples, additional lightsources may be illuminated predictively based upon motion using logicimplemented on controller 130.

FIG. 4A schematically illustrates example adjustments that may be madeto light source intensities based upon a change in position of aperipheral device 402 within a field of view of image sensors on a NEDdevice 404. The example peripheral device 402 comprises sixteen lightsources, but may have any other suitable number. In this example, theuser 406 rotates the peripheral device 402 counterclockwise from theperspective of the figure and moves the peripheral device towards a leftside of the field of view. In FIG. 4A, the NED device 404 detects aconstellation of light sources with light source 9 at a lowest angle tothe image sensor, and sends constellation information (shown ascommunication 408 a) to the peripheral device 402 identifying thedetected constellation as being indexed by light source 9. Theconstellation information may comprise simply an identity of the indexlight source of the constellation, a list of light sources detected,and/or any other suitable constellation information. In response, theperipheral device 402 accesses the calibration table 128 (FIG. 1) todetermine the pre-calibrated light source intensities for each lightsource of the peripheral device 402 for index light source 9. Theperipheral device 402 then illuminates light sources 5 through 13 of theperipheral device 402 at various intensities such that the imaged lightsources have suitably uniform intensities, plus some out-of-viewneighboring light sources as a buffer to account for potential motion ofthe peripheral device. Light sources 14-16 and 1-4, which are out ofview of the image sensor and outside of the buffer zone, are poweredoff.

FIG. 4B depicts the peripheral device 402 after the rotation andtranslation shown in FIG. 4A. Here, the NED device 404 detects aconstellation of light sources indexed by light source 7 and sends theindex 7 to the peripheral device 402, as indicated by communication 408b. The peripheral device 402 illuminates light sources 3 through 10based upon constellation-specific intensities stored in the calibrationtable for the constellation indexed by light source 7. In this example,light sources 4 through 9 are currently in view and are illuminated atvarious power levels to appear suitably uniform in intensity to theimage sensors of the NED device 404. Light sources 3 and 10 are out ofview, but are neighboring those that are viewable and are illuminated toserve as a buffer to accommodate motion of the peripheral device 402prior to the next image frame.

As mentioned above, in some examples, light sources other than the onesin a currently imaged constellation may be illuminated predictively. Forexample, when the peripheral device 402 is within a field of view of theimage sensors and moving, motion data detected by the NED device 404and/or the peripheral device 402 may be used to determine light sourceslikely to come into view in one or more future image frames (e.g. withinthe next 10-20 ms). As one more specific example, based on a currentposition and/or orientation of a peripheral device relative to a NEDdevice and motion data, the NED device may send a rough prediction of aquadrant (or other fraction of the field of view) and/or orientationwhere the peripheral device may be located in a future image frame. Insome such examples, the peripheral device 108 may use the calibrationtable to determine a subset of light sources likely to be viewable bythe image sensor 106 when the peripheral device is in the predictedquadrant and/or orientation. As another more specific example, the NEDdevice may utilize a ray-tracing model to trace a last known (orpredicted) position of the peripheral device to a future position, forexample, based on a current velocity and/or acceleration vector of theperipheral device relative to the NED device. This determination thenmay be used to trigger the peripheral device 402 to illuminate lightsources that are not in a currently imaged constellation but that arelikely to be imaged in a near future image frame.

Similarly, the size of a buffer of neighboring light sources illuminatedmay change based upon motion data detected by the NED device 404 and/orthe peripheral device 402. For example, when the peripheral device 402is moving and/or accelerating slowly (e.g. <a threshold velocity and/oracceleration) relative to the NED device 404, a lesser number ofneighboring light sources may be illuminated than when the peripheraldevice 402 is moving and/or accelerating quickly (e.g. >the thresholdvelocity and/or acceleration) relative to the NED device 404.

Other strategies may be utilized to control light source intensities forpower savings and/or tracking performance. For example, when aperipheral device is determined to not be in motion (e.g. for athreshold duration of time or number of image frames), the intensitiesof the light sources may be adjusted to zero for power savings. Thisalso may be done when the peripheral device is determined to have movedout of a field of view of the NED device image sensors. FIGS. 5A-5B showan example scenario in which the peripheral device is moved from withina field of view of the NED device 404 to a location outside the field ofview. When the NED device 404 no longer detects the peripheral device402 within the field of the view, the NED device 404 sends a controlsignal 508 to the peripheral device 402 to trigger a controller of theperipheral device 402 to power off all light sources. As shown in FIG.5B, the peripheral device 402 powers off all light sources uponreceiving the control signal indicating that the peripheral device 402is outside of the field of view. This may help preserve battery life.

Likewise, to preserve tracking performance, when a peripheral device isoutside of the field of view and the light sources have been poweredoff, but is moving towards the field of view, the peripheral device maypower on all light sources so that the peripheral device may quicklyresynchronize with the NED device. Referring first to FIG. 6A theperipheral device 402 is outside of the field of view of the NED device404 and all light sources of the peripheral device 402 are powered off.The peripheral device 402 begins moving towards the field of view of theNED device 402 and communicates motion data to the NED device 404 (e.g.a current acceleration vector for the peripheral device). In response,the NED device 404 sends to the peripheral device 402 a control signal608 that triggers the peripheral device 402 to power on all lightsources. In other examples, the control signal may be internallygenerated by the peripheral device 402, e.g. based upon motion data frommotion sensors on the peripheral device 402 combined with a most recentoptical tracking position communicated by the NED device 404.

FIG. 6B shows the peripheral device 402 with all light sources poweredon prior to reentering the field of view. Once the peripheral device 402appears within view of the image sensor of the NED device 404, the NEDdevice 404 may capture image data of the peripheral device 402, identifya constellation of light sources within the image data, and communicateconstellation information to the peripheral device 402. The peripheraldevice 402 then may reference the calibration table 128 (FIG. 1) toidentify an appropriate intensity value for each light source based onthe constellation information received, and adjust an intensity of oneor more light sources accordingly.

FIG. 7 shows a flow diagram illustrating an example method 700 forsending constellation information to a peripheral device. Method 700 maybe implemented as stored instructions executable by a logic subsystem ofa computing device that images the peripheral device, such as NED device102 and NED device 404, as well as other types of computing devices(e.g. desktops, laptops, mobile devices, tablet devices, etc.).

At 702, method 700 comprises receiving image data from an image sensor.Receiving image data may comprise receiving image data from an imagesensor configured to image visible light, and/or from an image sensorconfigured to image infrared light. Any suitable image sensor may beused. In some examples, the image sensor comprises a stereo cameraarrangement including two or more cameras configured to resolve depthwithin the image data. In other examples, a single image sensor, ratherthan a stereo arrangement, may be used.

At 704, method 700 comprises identifying in the image data aconstellation of light sources formed by a subset of light sources ofthe peripheral device. Any suitable image analysis technique may be usedto identify the constellation of light sources in the image data. Forexample, a computing device may threshold an image to find approximatelight source locations, and then fit a statistical curve (e.g. aGaussian function) to the threshold image to locate the light sources ona pixel or sub-pixel basis. Epipolar line fitting, a rigid bodytransformation, or any other suitable method may be used to identify aconstellation of light sources of the peripheral device that correspondsto the light source locations detected within the image data. Thecomputing device also may utilize motion data obtained from a motionsensor of the computing device and/or the peripheral device inestimating a pose of the peripheral device relative to the computingdevice.

Based upon the constellation of light sources identified, method 700further comprises, at 706, sending constellation information to theperipheral device. The constellation information triggers the peripheraldevice to adjust an intensity of one or more light sources of theperipheral device, such that light sources not in view of the imagesensor may be powered off and light sources within view or likely tocome within view of the image sensor may be illuminated to exhibitsuitably uniform intensities from a perspective of the image sensor. Insome examples, the constellation information may be sent at a same framerate used by the image sensor to acquire images, e.g. 90 Hz. Theconstellation information may comprise any suitable information useableby the peripheral device to adjust light source intensities asdisclosed. In some examples, the constellation information comprises anindex identifying a selected light source within the subset of lightsources detected in the image data, as indicated at 708. In a morespecific example, the index may comprise an identification of acentermost light source within the subset of light sources detected,e.g. as defined by a light source that has the smallest viewing anglefrom a perspective of the image sensor. In other examples, sending theconstellation information may comprise sending a list of light sourceswithin the subset of light sources detected, as indicated at 710. In yetother examples, any other suitable constellation information related tothe constellation of light sources identified may be sent to theperipheral device.

As mentioned above, motion data may be used to further inform theconstellation information sent to the peripheral device. Method 700 thusmay comprise receiving motion data, as indicated at 712. Receivingmotion data may comprise receiving motion data from a motion sensorresiding on the peripheral device and/or from a motion sensor residinglocally on the computing device. Additionally or alternatively,receiving motion data may comprise receiving image data and determininga movement of the peripheral device relative to the computing devicebased on image data. In any instance, based on the motion data, thecomputing device may predict a constellation of light sources of theperipheral device likely to be detected in a future image frame, asindicated at 714, and send constellation information related to thepredicted constellation of light sources to the peripheral device. Inother examples, the computing device may send the motion data to theperipheral device, and the peripheral device may predict a constellationof light sources likely to be detected in a future image frame.

In some examples, the computing device may determine via image data thatthe peripheral device is outside of a field of view of the image sensor,for example, by not detecting light sources of the peripheral device ina threshold number of consecutive image frames. Likewise, based onmotion data received, the computing device may determine that theperipheral device is not moving (or not moving relative to the computingdevice). In either instance, the computing device may send a controlsignal to the peripheral device to trigger the peripheral device topower off each light source, as indicated at 716. Further, when theperipheral device light sources are powered down and the peripheraldevice is outside of a field of view of the image sensors of thecomputing device, the computing device may determine, based on themotion data, that the out-of-view peripheral device is moving towardsthe field of view of the image sensor, and in response may send acontrol signal to the peripheral device to trigger the peripheral deviceto power on each light source, as indicated at 718.

FIG. 8 shows a flowchart illustrating an example method 800 foradjusting an intensity of one or more light sources of a peripheraldevice. Method 800 may be implemented as stored instructions executableby a controller of a peripheral device, such as peripheral device 108and/or 402.

At 802, method 800 comprises receiving constellation information from aremote computing device (e.g. a NED device). The peripheral device mayreceive the constellation information directly from the remote computingdevice via respective communication subsystems of each device, or mayreceive the constellation information from an intermediary hostcomputing device communicatively coupled to the remote computing deviceand the peripheral device. In some examples, receiving constellationinformation comprises receiving an index identifying a selected lightsource of the constellation of light sources (e.g. a centermost lightsource as viewed from the image sensor). In other examples, receivingconstellation information comprises receiving a list of light sourcesdetected by the remote computing device. In yet other examples, theconstellation information may include any suitable information relatedto the constellation of light sources detected (or predicted as likelyto be detected) by the remote computing device.

Based on the constellation information received, method 800 comprises,at 804, determining an intensity at which to illuminate each lightsource. Determining the intensity at which to illuminate each lightsource may comprise accessing a calibration table (e.g. calibrationtable 128 in FIG. 1, calibration table 300 in FIG. 3) storing intensityvalues for each light source within the constellation of light sources,as indicated at 806.

At 808, method 800 comprises adjusting an intensity of each of one ormore light sources based on the intensities determined. This maycomprise illuminating all light sources within a constellation of lightsources identified according to constellation-specific intensity valuesfor each light source in the constellation table. Adjusting theintensity of the one or more light sources also may compriseilluminating one or more neighboring light sources proximate to a lightsource(s) within the constellation identified, for example, as a bufferto account for possible movement of the peripheral device relative tothe NED, as indicated at 810. Further, method 800 may comprise adjustingan intensity of select light source(s) occluded from view to zero, asindicated at 812.

In some examples, motion data may be used to inform light sourceintensity adjustments. As such, at 814, method 800 comprises receivingmotion data indicating motion of the peripheral device. Receiving motiondata may comprise receiving motion data from a motion sensor of theperipheral device, and/or may comprise receiving motion data from theremote computing device. Based on the motion data received, method 800may comprise adjusting a power provided to one or more light sources.

For example, the motion data may indicate a direction of motion of theperipheral device (e.g. a direction of a rotation and/or translation),and the peripheral device may adjust an intensity of one or more lightsources based on the direction of motion, as indicated at 816. This maycomprise preemptively illuminating one or more light sources likely tocome into view of the image sensor based upon the motion data. Motiondata also may be used to adjust a number of lights within a bufferregion, as indicated at 818. As one example, the motion data mayindicate that the peripheral device is moving and/or acceleratingquickly, and may inform the controller of the peripheral device toincrease a buffer of neighboring light sources that are illuminated.Increasing the buffer may comprise determining one or more light sourceslikely to be detected in a future image frame and preemptively increasean intensity of each image light source determined. The motion datalikewise may inform the controller to maintain or decrease the buffer ofneighboring light sources illuminated, for example, based on theperipheral device moving and/or accelerating slowly. This may help tomaintain tracking of the peripheral device in image data as theperipheral device changes pose relative to the remote computing device.Further, motion data may indicate a change in distance between thecomputing device and the peripheral device. As a perceived brightness ofa light source may decrease as a distance between the peripheral deviceand the image sensor increases, and may increase as the distancedecreases, method 800 may comprise adjusting an intensity of one or morelight sources based upon the distance between the image sensor and theperipheral device, as indicated at 820.

The examples disclosed herein may provide advantages over displaysystems that utilize globally controlled light sources, which may besubject to costly, time-intensive sourcing and manufacturing processes.For example, to obtain a plurality of light-emitting diodes (LEDs)having substantially similar brightness characteristics, a supplier maytest, sort, and bin LEDs according to various parameters (color, lumenoutput, forward voltage, etc.). Such sorting and binning are timeintensive, and thus increase materials and manufacturing costs. Incontrast, in the disclosed examples, all light sources of a peripheraldevice are calibrated on a per-constellation basis, such that each lightsource is individually calibrated to illuminate at a suitable intensityin each constellation position. This may reduce or eliminate the need toperform LED binning and resistor matching.

FIG. 9 shows a flowchart illustrating an example method 900 forcalibrating light sources of a peripheral device. Method 900 may beimplemented as a manufacturing process, for example. At 902, method 900comprises capturing image data of a peripheral device at a currentangular position. FIG. 10 shows an example calibration process in whichan image sensor 1004 (a stereo camera arrangement comprising a firstcamera 1004 a and a second camera 1004 b) of an imaging computing device1006 is in a fixed location, and the peripheral device 108 is positionedon a rotating mount 1002. FIG. 11A depicts the peripheral device 402 ata current first angular position 1102, where light sources 6 through 12of the peripheral device 402 are within view of the image sensor 1004.The image sensor 1004 captures an image of the peripheral device 402 atthe first angular position 1102.

Continuing with FIG. 9, method 900 comprises, at 904, detecting in theimage data a constellation of light sources visible at the currentangular position. It will be understood that the term “visible” refersto the constellation being viewable from a perspective of the imagesensor, and does not necessarily indicate that the light sources emitvisible light. Detecting the constellation of light sources may comprisethresholding image data obtained of the peripheral device at the currentangular position to identify bright pixels or sub-pixels with respect topixels. Any other suitable method for detecting one or more lightsources within the image data also may be used.

At 906, method 900 comprises, assigning an index light source for thecurrent constellation of light sources. For example, the computingdevice may determine a centermost light source (e.g. smallest viewingangle with respect to image sensor) within a detected constellation oflight sources, and assign the centermost light source as the index lightsource for the constellation. In the example of FIG. 11A, LightSource9may be assigned as the index light source for the constellation of lightsources detected at the first angular position 1102.

At 908, method 900 comprises, adjusting an intensity of one or morelight sources to adjust a relative intensity of each of the one or morelight sources of the constellation of light sources compared to one ormore other light sources. Adjusting the intensity of the one or morelight sources of the constellation may comprise adjusting the intensitysuch that the index light source and other light sources detected in theconstellation of light sources have a substantially uniform intensityfrom a perspective of the image sensor. For example, while theperipheral device is at the current angular position, the imagingcomputing device may determine whether an intensity of the index lightsource for the constellation of light sources is sufficiently bright fordetection, e.g. by thresholding image data to detect the constellationof light sources.

If the index light source for the constellation is not sufficientlybright or is overly bright (e.g. causes pixel saturation), the imagingcomputing device may send a control signal to the peripheral device toincrease or decrease the intensity. Thus, method 900 may compriseadjusting an intensity of the index light source, as indicated at 910.The imaging computing device also determines intensity values for eachof the other light sources detected within the constellation of lightsources, and sends a control signal(s) to the peripheral device totrigger the peripheral device to adjust the intensity of each of theother light sources. In response, the peripheral device adjusts theintensity of each of the other light sources, as indicated at 912 Forone or more light sources of the peripheral device that are not detectedwithin the constellation of light sources, the control signal maytrigger the peripheral device to adjust the intensity of the lightsource(s) to zero (power off).

At 914, method 900 comprises determining whether each light source hasbeen indexed. If each light source has been indexed, method 900continues to 920. If a light source has not been indexed, the methodproceeds to 916.

At 916, method 900 comprises changing a position of the peripheraldevice such that one or more light sources of the peripheral devicewithin a field of view of the image sensor at the first angular positionare not within the field of view at a second angular position. FIG. 11Bdepicts the peripheral device 402 at the second angular position 1104,where light sources 5 through 11 are within view of the image sensor1004, and light source 12 is no longer within view of the image sensor1004. In some examples, changing a position of the peripheral device maycomprise rotating the peripheral device about an axis. As shown in FIG.10, a rotating mount 1002 may rotate the peripheral device 108. In otherexamples, a position change about a single axis may not achieve asuitably low viewing angle for each light source. In such examples, theimaging computing device may estimate light source intensity via athree-dimensional model of the peripheral device, and/or may utilize3-axis motion to image each light source at a suitably low viewing angleto the image sensor.

After changing the position of the peripheral device, method 900 returnsto step 902 to calibrating a constellation of light sources in view ofthe image sensor at the new current angular position. While theperipheral device is at the new current angular position, the same orsimilar processes as described above may be performed to capture imagedata of the peripheral device at the current angular position, detect inthe image data a constellation of light sources visible at the currentangular position, assign an index light source for the constellation oflight sources (e.g. LightSource8 in FIG. 11B), and adjust an intensityof one or more light sources of the peripheral device. This process iscontinued at different angular positions of the peripheral device untilall light sources of the peripheral device are indexed (e.g. until eachlight source is an index light source for a constellation). By adjustingthe intensity of one or more light sources on a per-constellation basis,the light sources within a detected constellation of light sources mayexhibit uniform brightness from a perspective of the image sensor, eventhough the light sources comprise different viewing angles and differentmanufacturing characteristics. This may facilitate light sourcedisambiguation and optical tracking of a peripheral device.

Returning to FIG. 10, the peripheral device 108 is positioned such thatlight sources on an exterior of the ring-like structure 1008 are withinview of the image sensor 1004. Thus, changing the position of theperipheral device, at 916, may comprise positioning the peripheraldevice opposite the pose shown in FIG. 10, such that light sources on aninterior of the ring-like structure 1008 are within view of the imagesensor 1004. Method 900 may then proceed to 918, to perform thecalibration process 900 for each light source on the interior of thering-like structure 1008. In other examples, light sources of aperipheral device may be calibrated in any other suitable order.

Once all light sources are indexed, method 900 comprises, at 920,storing a calibration table comprising, for each constellation, theintensity of the index light source and the intensity of each of theother light sources of the peripheral device within that constellation.Storing the calibration table may comprise storing the calibration tablelocally on the peripheral device. The calibration table also may bestored elsewhere, such as in a network-accessible storage location as abackup copy for device recovery.

As mentioned above, some light sources may be out of view of the imagesensor at the first angular position (or any other angular position).The calibration table thus may store, for one or more constellationindices, an intensity of zero for one or more selected light sources ofthe peripheral device that are not visible to the image sensor when theconstellation is viewable by an image sensor, as indicated at 922. Thismay help to extend battery life for a peripheral device relative toilluminating light sources that are not visible to the image sensor.Additionally or alternatively, the calibration table may store non-zerointensities for one or more neighboring light sources, as indicated at924.

In some embodiments, the methods and processes described herein may betied to a computing system of one or more computing devices. Inparticular, such methods and processes may be implemented as acomputer-application program or service, an application-programminginterface (API), a library, and/or other computer-program product.

FIG. 12 schematically shows a non-limiting embodiment of a computingsystem 1200 that can enact one or more of the methods and processesdescribed above. Computing system 1200 is shown in simplified form.Computing system 1200 may take the form of one or more personalcomputers, server computers, tablet computers, home-entertainmentcomputers, network computing devices, gaming devices, mobile computingdevices, mobile communication devices (e.g., smart phone), and/or othercomputing devices. Computing system 1200 may represent any of NED device102, peripheral device 108, NED device 404, peripheral device 402, andimaging computing device 1006.

Computing system 1200 includes a logic machine 1202 and a storagemachine 1204. Computing system 1200 may optionally include a displaysubsystem 1206, input subsystem 1208, communication subsystem 1210,and/or other components not shown in FIG. 12.

Logic machine 1202 includes one or more physical devices configured toexecute instructions. For example, the logic machine 1202 may beconfigured to execute instructions that are part of one or moreapplications, services, programs, routines, libraries, objects,components, data structures, or other logical constructs. Suchinstructions may be implemented to perform a task, implement a datatype, transform the state of one or more components, achieve a technicaleffect, or otherwise arrive at a desired result.

The logic machine 1202 may include one or more processors configured toexecute software instructions. Additionally or alternatively, the logicmachine 1202 may include one or more hardware or firmware logic machinesconfigured to execute hardware or firmware instructions. Processors ofthe logic machine 1202 may be single-core or multi-core, and theinstructions executed thereon may be configured for sequential,parallel, and/or distributed processing. Individual components of thelogic machine 1202 optionally may be distributed among two or moreseparate devices, which may be remotely located and/or configured forcoordinated processing. Aspects of the logic machine 1202 may bevirtualized and executed by remotely accessible, networked computingdevices configured in a cloud-computing configuration.

Storage machine 1204 includes one or more physical devices configured tohold instructions executable by the logic machine 1202 to implement themethods and processes described herein. When such methods and processesare implemented, the state of storage machine 1204 may betransformed—e.g., to hold different data.

Storage machine 1204 may include removable and/or built-in devices.Storage machine 1204 may include optical memory (e.g., CD, DVD, HD-DVD,Blu-Ray Disc, etc.), semiconductor memory (e.g., RAM, EPROM, EEPROM,etc.), and/or magnetic memory (e.g., hard-disk drive, floppy-disk drive,tape drive, MRAM, etc.), among others. Storage machine 1204 may includevolatile, nonvolatile, dynamic, static, read/write, read-only,random-access, sequential-access, location-addressable,file-addressable, and/or content-addressable devices.

It will be appreciated that storage machine 1204 includes one or morephysical devices. However, aspects of the instructions described hereinalternatively may be propagated by a communication medium (e.g., anelectromagnetic signal, an optical signal, etc.) that is not held by aphysical device for a finite duration.

Aspects of logic machine 1202 and storage machine 1204 may be integratedtogether into one or more hardware-logic components. Such hardware-logiccomponents may include field-programmable gate arrays (FPGAs), program-and application-specific integrated circuits (PASIC/ASICs), program- andapplication-specific standard products (PSSP/ASSPs), system-on-a-chip(SOC), and complex programmable logic devices (CPLDs), for example.

The term “program” may be used to describe an aspect of computing system1200 implemented to perform a particular function. In some cases, aprogram may be instantiated via logic machine 1202 executinginstructions held by storage machine 1204. It will be understood thatdifferent programs may be instantiated from the same application,service, code block, object, library, routine, API, function, etc.Likewise, the same program may be instantiated by differentapplications, services, code blocks, objects, routines, APIs, functions,etc. The term “program” may encompass individual or groups of executablefiles, data files, libraries, drivers, scripts, database records, etc.

It will be appreciated that a “service”, as used herein, is anapplication program executable across multiple user sessions. A servicemay be available to one or more system components, programs, and/orother services. In some implementations, a service may run on one ormore server-computing devices.

When included, display subsystem 1206 may be used to present a visualrepresentation of data held by storage machine 1204. This visualrepresentation may take the form of a graphical user interface (GUI). Asthe herein described methods and processes change the data held by thestorage machine, and thus transform the state of the storage machine,the state of display subsystem 1206 may likewise be transformed tovisually represent changes in the underlying data. Display subsystem1206 may include one or more display devices utilizing virtually anytype of technology. Such display devices may be combined with logicmachine 1202 and/or storage machine 1204 in a shared enclosure, or suchdisplay devices may be peripheral display devices.

When included, input subsystem 1208 may comprise or interface with oneor more user-input devices such as a keyboard, mouse, touch screen, orgame controller. In some embodiments, the input subsystem may compriseor interface with selected natural user input (NUI) componentry. Suchcomponentry may be integrated or peripheral, and the transduction and/orprocessing of input actions may be handled on- or off-board. Example NUIcomponentry may include a microphone for speech and/or voicerecognition; an infrared, color, stereoscopic, and/or depth camera formachine vision and/or gesture recognition; a head tracker, eye tracker,accelerometer, and/or gyroscope for motion detection and/or intentrecognition; as well as electric-field sensing componentry for assessingbrain activity.

When included, communication subsystem 1210 may be configured tocommunicatively couple computing system 1200 with one or more othercomputing devices. Communication subsystem 1210 may include wired and/orwireless communication devices compatible with one or more differentcommunication protocols. As non-limiting examples, the communicationsubsystem may be configured for communication via a wireless telephonenetwork, or a wired or wireless local- or wide-area network. In someembodiments, the communication subsystem 1210 may allow computing system1200 to send and/or receive messages to and/or from other devices via anetwork such as the Internet.

Another example provides a near-eye display device comprising an imagesensor, a communications subsystem, a logic subsystem, and a storagesubsystem storing instructions executable by the logic subsystem tocontrol a peripheral device comprising a plurality of light sources byreceiving image data from the image sensor, identifying in the imagedata a constellation of light sources formed by a subset of lightsources of the peripheral device, and based upon the constellation oflight sources identified, send, to the peripheral device via thecommunications subsystem, constellation information related to theconstellation of light sources identified. In such an example, theconstellation information may additionally or alternatively comprise anindex identifying a selected light source within the subset of lightsources. In such an example, the constellation information mayadditionally or alternatively comprise a list of light sources withinthe subset of light sources detected. In such an example, theinstructions may additionally or alternatively be executable todetermine, via the image data, that the peripheral device is outside ofa field of view of the image sensor, receive motion data from theperipheral device, and based upon the motion data received, determinethat the peripheral device is moving towards the field of view of theimage sensor, and sending the constellation information may additionallyor alternatively comprise sending a control signal to the peripheraldevice to trigger the peripheral device to power on each light source ofthe plurality of light sources. In such an example, the instructions mayadditionally or alternatively be executable to, based at least on theimage data, determine a second constellation of light sources of theperipheral device likely to be detected in a future image frame, andsending the constellation information may additionally or alternativelycomprise sending, to the peripheral device, second constellationinformation related to the second constellation of light sourcesdetermined. In such an example, the instructions may additionally oralternatively be executable to receive motion data from a motion sensorindicating a motion of the peripheral device relative to the near-eyedisplay device, and sending the constellation information mayadditionally or alternatively comprise sending to the peripheral devicea prediction of a constellation likely to be detected in a future imageframe based on the motion data. In such an example, the instructions mayadditionally or alternatively be executable to determine that theperipheral device is out of a field of view of the image sensor, andsending the constellation information may additionally or alternativelycomprise sending a control signal to the peripheral device to triggerthe peripheral device to power off each light source of the plurality oflight sources.

Another example provides a peripheral device configured to be held orworn by a user, the peripheral device comprising a plurality of lightsources, a communications subsystem configured to receive constellationinformation from an imaging computing device regarding a constellationof light sources of the peripheral device detected by the imagingcomputing device in image data, and a controller configured to, basedupon the constellation information received, determine an intensity atwhich to illuminate each light source, and adjust the intensity of oneor more light sources based on the intensities determined. In such anexample, for a select light source indicated by the constellationinformation to be out of view, the controller may additionally oralternatively be configured to adjust an intensity of the select lightsource to zero. In such an example, the plurality of light sources mayadditionally or alternatively comprise a plurality of visiblelight-emitting diodes (LEDs) and/or infrared (IR) LEDs. In such anexample, the constellation information may additionally or alternativelycomprise an index identifying a selected light source of theconstellation of light sources. In such an example, the constellationinformation may additionally or alternatively comprise a list of lightsources detected by the imaging computing device. In such an example,the controller may additionally or alternatively be configured todetermine the intensity at which to illuminate the light source via acalibration table stored on the peripheral device, the calibration tablecomprising an intensity value for each light source of the plurality oflight sources. In such an example, the peripheral device mayadditionally or alternatively comprise a motion sensor, and thecontroller may additionally or alternatively be configured to receivemotion data from the motion sensor indicating a motion of the peripheraldevice, and adjust a power provided to one or more light sources basedon the motion data received. In such an example, the controller mayadditionally or alternatively be configured to, based upon the motiondata received, determine one or more light sources likely to be detectedby the imaging computing device in a future image frame, and increase anintensity of each of the one or more light sources determined likely tobe detected in the future image frame. In such an example, thecontroller may additionally or alternatively be configured to, based onthe motion data received, power on one or more neighboring light sourcesof the first constellation of light sources, each neighboring lightsource being proximate to a light source within the first constellationof light sources.

Another example provides a method of calibrating, via a computing systemcomprising an image sensor, a peripheral device having a plurality oflight sources for position tracking, the method comprising capturingfirst image data of the peripheral device at a first position of theperipheral device, detecting, in the first image data, a firstconstellation of light sources visible at the first position, adjustingan intensity of each of one or more light sources of the firstconstellation of light sources to adjust a relative intensity of each ofthe one or more light sources of the first constellation of lightsources compared to one or more other light sources, changing a positionof the peripheral device such that one or more light sources of theperipheral device within a field of view of the image sensor at thefirst position are not within the field of view at a second position,capturing second image data of the peripheral device at the secondposition of the peripheral device, detecting, in the second image data,a second constellation of light sources visible at the second position,adjusting an intensity of each of one or more light sources of thesecond constellation of light sources to adjust a relative intensity ofeach of the one or more light sources of the second constellation oflight sources compared to one or more other light sources, and storing acalibration table comprising, for each of the first constellation oflight sources and the second constellation of light sources, anintensity for each light source detected. In such an example, adjustingthe intensity of each of the one or more light sources of the firstconstellation of light sources may additionally or alternativelycomprise adjusting the intensity of an index light source for the firstconstellation of light sources constellation, and adjusting an intensityof each of other light sources detected within the first constellationof light sources to have a substantially uniform intensity as the indexlight source from the perspective of the image sensor. In such anexample, storing the calibration table may additionally or alternativelycomprise, for the first constellation of light sources, storing anintensity of zero for each light source of the peripheral device that isnot visible at the first angular position. In such an example, storingthe calibration table may additionally or alternatively comprise, forthe first constellation of light sources, storing information regardingone or more neighboring light sources, each neighboring light sourcebeing proximate to a light source within the first constellation oflight sources.

It will be understood that the configurations and/or approachesdescribed herein are exemplary in nature, and that these specificembodiments or examples are not to be considered in a limiting sense,because numerous variations are possible. The specific routines ormethods described herein may represent one or more of any number ofprocessing strategies. As such, various acts illustrated and/ordescribed may be performed in the sequence illustrated and/or described,in other sequences, in parallel, or omitted. Likewise, the order of theabove-described processes may be changed.

The subject matter of the present disclosure includes all novel andnon-obvious combinations and sub-combinations of the various processes,systems and configurations, and other features, functions, acts, and/orproperties disclosed herein, as well as any and all equivalents thereof.

1. A near-eye display device, comprising: an image sensor; acommunications subsystem; a logic subsystem; and a storage subsystemstoring instructions executable by the logic subsystem to receive imagedata from the image sensor, the image sensor configured to image aperipheral device; identify in the image data a constellation of lightsources formed by a subset of light sources of the peripheral device,the subset excluding one or more light sources that are occluded fromview of the image sensor due to a pose of the peripheral device relativeto the near-eye display device; based upon the constellation of lightsources identified, determine the pose of the peripheral device relativeto the near-eye display device; and send, to the peripheral device viathe communications subsystem, information related to the pose, theinformation including an identification related to a light source in theconstellation of light sources.
 2. The near-eye display device of claim1, further comprising the peripheral device, wherein the peripheraldevice is configured to adjust an intensity of one or more selectedlight sources based upon the information including an identificationrelated to the light source in the constellation of light sources. 3.The near-eye display device of claim 1, wherein the instructions arefurther executable to, based on the image data, predict a constellationof light sources of the peripheral device likely to be viewed in afuture image frame, and output, to the peripheral device, a predictedconstellation of light sources.
 4. The near-eye display device of claim3, wherein the instructions are executable to predict the predictedconstellation of light sources based upon the image data.
 5. Thenear-eye display device of claim 3, wherein the instructions areexecutable to receive, via the communications subsystem, motion datafrom the peripheral device, and predict the predicted constellation oflight sources based upon the motion data from the peripheral device. 6.The near-eye display device of claim 3, wherein the instructions arefurther executable to predict a fraction of a field of view in which theconstellation of light sources is likely to be located.
 7. The near-eyedisplay device of claim 1, wherein the instructions are furtherexecutable to identify a constellation of light sources formed by asubset of light sources by thresholding the image data to findapproximate light source locations and fitting the approximate lightsource locations to a statistical curve to locate the light sources. 8.The near-eye display device of claim 7, wherein fitting the approximatelight source locations to a statistical curve comprises fitting to aGaussian function.
 9. The near-eye display device of claim 1, whereinthe instructions are further executable to send a control signal to theperipheral device to adjust the intensity of a specific light source ofthe peripheral device.
 10. The near-eye display device of claim 1,wherein the information including the identification related to a lightsource in the constellation of light sources comprises one or more indexlight sources indicating the determined pose.
 11. A peripheral deviceconfigured to be held or worn by a user, the peripheral devicecomprising: a plurality of light sources, each light source located at acorresponding fixed position on the peripheral device; a communicationssubsystem configured to receive constellation information identifying asubset of the plurality of light sources of the peripheral device; and acontroller configured to, based at least upon the constellationinformation received, determine an intensity at which to illuminate eachlight source, and adjust the intensity of one or more light sourcesbased on the intensities determined.
 12. The peripheral device of claim11, further comprising a motion sensor, and wherein the controller isconfigured to, based on motion data from the motion sensor, illuminateone or more light sources neighboring the subset of the plurality oflight sources.
 13. The peripheral device of claim 11, wherein thecontroller is configured to determine the intensity at which toilluminate each light source based at least on motion sensor data of theperipheral device.
 14. The peripheral device of claim 11, wherein thecommunications subsystem is configured to receive motion tracking data,and wherein the controller is configured to determine the intensity atwhich to illuminate each light source based upon the motion trackingdata received.
 15. The peripheral device of claim 11, wherein the lightsources comprise one or more of LEDs.
 16. On a near-eye display device,a method of controlling a plurality of light sources on a peripheraldevice, the method comprising: receiving image data from an image sensorof the near-eye display device; identifying in the image data aconstellation of light sources formed by a subset of light sources onthe peripheral device, the subset excluding one or more light sourcesthat are occluded from view of the image sensor due to a pose of theperipheral device relative to the near-eye display device; based uponthe constellation of light sources identified, determining the pose ofthe peripheral device relative to the near-eye display device; andsending information to the peripheral device, the information related tothe determined pose, and the information including an identificationrelated to a light source in the constellation of light sources.
 17. Themethod of claim 16, wherein identifying the constellation of lightsources comprises thresholding the image data to find approximate lightsource locations and fitting the approximate light source locations to astatistical curve to locate the light sources.
 18. The method of claim16, further comprising, based on two or more images from the imagesensor, determining motion tracking data related to the motion of theperipheral device relative to the image sensor and predicting a newconstellation of light sources likely to be visible in future imagedata.
 19. The method of claim 18, wherein sending the information to theperipheral device further comprises sending the motion tracking data tothe peripheral device.
 20. The method of claim 16, wherein sending theinformation to the peripheral device further comprises sendinginformation that indexes a calibration table storing intensity levels atwhich to illuminate the plurality of light sources.